package it.polimi.swimv2.remote;

import it.polimi.swimv2.exception.AbilityExistsException;
import it.polimi.swimv2.exception.ModifyException;

import java.util.Collection;

import javax.ejb.Remote;

@Remote
public interface AbilityManagerRemote {
	public Collection<String> getDeclarableAbilities();

	/**
	 * Creates a new declarable ability with the specified ability name.
	 * 
	 * @param abilityName
	 *            the name of the new ability to create
	 * @return true when the ability has been created, otherwise returns false.
	 * @throws ModifyException
	 *             when the specified parameters are not valid.
	 * @throws AbilityExistsException
	 *             when exists an ability with the specified name.
	 */
	public boolean createNewDeclarableAbility(String abilityName)
			throws ModifyException, AbilityExistsException;

	/**
	 * Delete the declarable ability with the specified name. All the entities
	 * associated to this ability will be also deleted, User will be updated.
	 * 
	 * @param abilityName
	 *            the name of the ability to delete.
	 * @return true if ok, false if the specified ability does not exist.
	 */
	public boolean deleteDeclarableAbility(String abilityName);
}
